package com.fyh.service;

import com.fyh.entity.chat.ChatPageProp;
import com.fyh.entity.chat.ChatRecord;
import com.fyh.entity.chat.InformRecord;
import com.fyh.entity.chat.SimpleContact;
import com.fyh.entity.job.DeliveryRecord;

import java.util.List;

public interface ChatService {

    /**
     * 获取联系人列表
     * @param userId
     * @return
     */
    List<SimpleContact> getSimpleContactList(Long userId);

    /**
     * 记录聊天记录
     * @param chatRecord
     */
    void insertChatRecord(ChatRecord chatRecord);

    /**
     * 更新聊天记录状态
     * @param receiverId
     */
    void updateChatRecordStatus(Long sendId, Long receiverId);

    /**
     * 获取聊天记录列表
     * @param chatPageProp
     * @return
     */
    List<ChatRecord> getChatRecordList(ChatPageProp chatPageProp);

    /**
     * 添加联系人
     * @param contactId
     */
    void addChatContact(Long useId, Long contactId);

    /**
     * 获取用户联系人ID列表
     * @param userId
     * @return
     */
    List<Long> getUserContactIdList(Long userId);

    /**
     * 获取是否有未读消息
     * @param userId
     * @return
     */
    Boolean getUnreadMessage(Long userId);

    /**
     * 更新联系人备注
     * @param simpleContact
     * @param userId
     */
    void updateContactName(SimpleContact simpleContact, Long userId);

    /**
     * 职位投递消息发送
     */
    void sendDeliveryMessage(Long positionId, Long employerId);

    /**
     * 获取用户通知列表
     * @param userId
     * @return
     */
    List<InformRecord> getUserInformRecord(Integer offset, Long userId);

    /**
     * 获取未读通知数量
     * @param userId
     * @return
     */
    Integer getUnreadInform(Long userId);

    /**
     * 职位投递状态变更消息发送给投递者
     */
    void sendDeliveryStatusInform(DeliveryRecord deliveryRecord);

    /**
     * 更新通知状态为已读
     * @param userId
     */
    void updateInformStatus(Long userId);
}
